﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>


//main函数
//main函数也被称作为主函数
//1.main函数是程序的入口
//2.main函数有且只能有一个
//3.一个项目内最多只可以存在一个main函数
//int main()
//{
//	return 0;
//}


//库函数的使用需要包含头文件
//库函数存在于编译器本身



//关键字：int if return double .....
//我们在定义其他变量时名字不可以与关键字重复
//关键字是不可以自己创建的



//字符 'a' '@' '#' ....
//这些字符使用单引号括起来
//但是我们计算机是用二进制来存放数据的，
// 所以每个字符都有对应的ASCLL码值。



//字符串与'\0'
//字符串末尾都隐藏着'\0',他是字符串结束的标志，计算机用其判断字符的
//读取


//转义字符
//有时我们会在使用 \n 和 \0 时有其他的应用，我就是想打 \0 
//这时就需要使用转义字符\ \n == 换行 \\n == \n


//数据类型的介绍
//字符型 char -unsigned

//整型
//短整型 short
//整型 int
//长整型 long 
//更长的整型 long long

//浮点型 
//float
//double
//long double


//布尔类型 - 头文件<stdbool.h>
//  _bool
//变量取值是 ture(执行) 和 false(不执行)


//各种数据类型的长度

//sizeof操作符
//它既是关键字，也是操作符，可以用来计算长度，单位为字节
//sizeof的操作数可以是类型，也可以是变量或者是表达式

//1.sizeof(类型)
//2.sizeof 表达式

//sizeof的计算结果是size_t类型的 - %zd


//变量
//1.全局变量 --存放在内存的静态区
//2.局部变量 --存放在内存的栈区
//局部优先
// 
//内存中存在三个区：栈区，静态区，堆区

//堆区存放动态内存管理



//算术计算符：-，+，*，/，%

//+ 和 - 来完成加法和减法

// * 完成乘法

// /完成除法，除法类型由操作数决定

// %取模即取余 

//赋值操作符 = 

//单目操作符：++，--，  +，-（正负号）

//前置++ ——先使用后加加

//后置++ ——先加加后使用


//占位符
//printf（"%d", a);   %d就是占位符

// %a -- 十六进制浮点数，输出为小写

// %A -- 十六进制浮点数，输出为大写

// %c -- 字符

// %d -- 十进制整数

// %e -- 使用科学计数法，指数部分为e的小写

// %E -- 使用科学计数法，指数部分为E的大写

// %i -- 整数，等同于 %d

// %f -- 小数（float,double)类型

// %g -- 6个有效数字的浮点数。整数部分⼀旦超过6位，
// 就会⾃动转为科学计数法，指数部分的 e为⼩写。

// %G -- 等同于% g ，唯⼀的区别是指数部分的 E 为⼤写。

// %o -- 八进制整型

// %p -- 指针

// %s -- 字符串

// %x -- 十六进制整型

// %zd -- size_t类型(sizeof所计算的类型)



//输出格式

//限定宽度
//如：
//int main()
//{
//	printf("%5d\n", 123);
//		return 0;
//}
// %5d -- 表示这个占位符的宽度至少为5，如果不满5，则会在前补上空格
// 默认为右对齐


//小数
//#include <stdio.h>
//int main()
//{
//	printf("%12f\n", 123.45);
//	return 0;
//}

//上⾯⽰例中， %12f 表⽰输出的浮点数最少要占据12位。
// 由于⼩数的默认显⽰精度是⼩数点后6位，
//所以 123.45 输出结果的头部会添加2个空格


//限定小数位数
//int main()
//{
//	printf("%.1f", 0.500);
//	return 0;
//}
//  .1f 会限制小数点后只显示1位


//限定符和宽度符可以结合使用


//输出部分字符串

//如果只是想输出部分字符串，可以采用 %.[m]s 指定输出
// 输出 hello
//#include <stdio.h>
//int main()
//{
//	printf("%.5s\n", "hello world");
//	return 0;
//}


//赋值忽略符
//用户在输入时间时会出现一下情况：
// 2024-2-23
// 2024/2/23

//那么在使用scanf函数获取时会出现错误，这时候可以使用赋值忽略符
// 为了避免这种情况，
// scanf() 提供了⼀个赋值忽略符） * 。
//只要把* 加在任何占位符的百分号后⾯，
//该占位符就不会返回值，解析后将被丢弃


//#include <stdio.h>
//int main()
//{
//	int year = 0;
//	int month = 0;
//	int day = 0;
//	scanf("%d%*c%d%*c%d", &year, &month, &day);
//	return 0;
//}

